import MultiLogin from '@/common/logic/multi-login'
import { initShare } from '@/common/logic/share'
import { initScreen, initScreenHeight, isWeChatMiniProgramWap, getUrlParams } from '@ccc/util'
import VConsole from 'vconsole'
import ElementUI from 'element-ui'
import Vue from 'vue'
// import leihuoCopyRight from 'leihuo-copyright'
// import LeihuoBindRole from 'leihuo-bind-role'
import leihuoFeedback, { LeihuoFeedbackPlugins } from 'leihuo-feedback'
import PCBG from '../../components/common/PCBG.vue'
import store from '@/store'
import * as Types from '@/store/mutation-types'

// 如不需引入反馈组件，请注释
const components = {
  feedback: leihuoFeedback
}
const install = function (Vue) {
  if (install.installed) return
  Object.keys(components).forEach((key) => {
    Vue.component(components[key].name, components[key])
  })
}

export async function initLogin () {
  await MultiLogin.init().catch(() => {})
}

export const initH5 = async () => {
  window.wx = undefined
  if (window.__TYPE === 'pc') {
    // TODO 确认PC适配方式1、2、3，删除多余代码
    // 方式1：PC用移动端居中展示
    initPCBG()
    initScreenHeight(1624) // 随高度变化响应
    // 方式1结束

    // 方式2：PC单独写一套，缩放适配
    // initScreen(1920) // 随宽度变化响应
    // 方式2结束

    // 方式3：PC单独写一套，px固定尺寸，不进行缩放
    /** 无需适配代码，在postcss.config.js 中，将 rpx2rem 改成 false **/
    // 方式3结束
  } else if (window.__TYPE === 'mh') {
    const windowWidth = uni.getSystemInfoSync().windowWidth
    __uniConfig.globalStyle.rpxCalcBaseDeviceWidth = 750 * (windowWidth / 1624)
  } else {
    initScreen(750)
  }
  if (__DEBUG && !__LOCAL) {
    // eslint-disable-next-line
    const vConsole = new VConsole()
  }
  uni.rawTitle = document.title

  // 如不需引入选择角色组件，请注释
  // Vue.use(LeihuoBindRole)
  // Vue.use(ElementUI)

  // 如不需引入反馈组件，请注释
  Vue.use(LeihuoFeedbackPlugins)
  Vue.use(ElementUI)
  install(Vue)

  // 设置渠道参数
  const search = getUrlParams() || {}
  store.commit(Types.SET_CHANNEL, search.channel)

  // 小程序内置，设置特殊class
  if (isWeChatMiniProgramWap()) {
    document.documentElement.classList.add('isMini')
  }
  // 如不需引入顶部组件，请注释
  // leihuoTop({
  //   holder: '#leihuo-top', // 承载的 dom （必填,ID容器如#leihuo-top）
  //   type: window.__TYPE, // pc端还是移动竖版（默认pc）
  //   domain: 'yjwujian', // 游戏名，详细列表参见下方对照表 https://ccc-doc.leihuo.netease.com/#/doc/leihuo-top/#/
  //   color: '#cfcfcf', // 图标颜色
  //   logo: 'yjwujian-pc-04', // logo对应的id
  //   overseas: false, // 是否是海外项目
  //   style: 'noborder',
  // })

  // leihuoCopyRight.create({
  //   holder: '#copyright',  //必填 承载的 dom （必填,ID容器）
  //   type: window.__TYPE,  // 必填 pc 端还是移动竖版（默认 PC） pc/m
  //   layout: 'toggle', //必填 版权形式，normal,toggle,normal是常驻，toggle带切换按钮切换显示隐藏
  //   fontStyle: window.__TYPE === 'm' ? 'white' : 'black',//非必填 版权字体颜色(和版权中的logo同色调)，提供black,white 两套基本色，
  //                      //      更多颜色搭配通过css自定义，背景色和背景装饰各自专题通过css设置即可
  //   btnColor:'#ffffff', //非必填 版权切换按钮一态色
  //   hoverColor: '#000'  //非必填 版权切换按钮hover颜色
  // })

  // 如不需引入分享组件，请注释
  initShare()

  // 如不需引入登录组件，请注释
  await initLogin()
}

export function initPCBG () {
  if (window.__TYPE !== 'pc') return
  document.documentElement.classList.add('pc-html')

  const bgEl = document.createElement('div')
  bgEl.id = '#pcBG'
  bgEl.classList.add('pc-bg-root')
  const uniappRoot = document.querySelector('uni-app')
  if (!uniappRoot) {
    window.setTimeout(() => {
      initPCBG()
    }, 50)
    return
  }
  uniappRoot.appendChild(bgEl)
  const bgConent = document.createElement('div')
  bgEl.appendChild(bgConent)

  const MyComponent = Vue.extend(PCBG)
  // eslint-disable-next-line
  new MyComponent({
    el: bgConent
  })
}
